Computer networks such as the Internet use various techniques and mechanisms for routing requested packets over data links in response to content requests. Such traffic may be routed over different network paths and/or may access different servers in order to fulfill the content requests. Various types of network devices are employed which have the ability to re-route network traffic, as needed, between different alternative servers that may each hold desired content, such as, for example, duplicate or cache content servers.
Network Address Translation (NAT) is a method for translating a first network address, used in a packet being transferred from one network location on a first network that uses a first set of addresses, to a second address usable on a second network that uses a second set of addresses. For example, one use of NAT is to translate the destination address of a packet, which a LAN receives from the Internet, from the publicly known address of one NAT device coupling the LAN to the Internet to an address of any of multiple devices, such as content servers, existing in the LAN whose addresses are not publicly known, to which the packet must travel. After changing the address to a new address, the NAT device can forward the packet onto the LAN using the translated address.
In some cases, a TCP port number of a packet may provide information used by the NAT device to perform the translation of the address of the packet to the new address. As an example, if a destination computer system (e.g., a content server) on a network receives a packet requesting data and containing an address translated as described above, the destination computer system can return data packets to the NAT device (e.g., the device that changed the packet to contain the translated address). The destination computer system does so by creating response packets that reference the source address and port information within the packet header that identify the NAT device as the originating device of the original packet requesting the data. When these response packets are routed back to the NAT device, the NAT device can compare the TCP port number information to NAT table entries to determine a true destination device (i.e., the device that generated the original request) to which that packet is then forwarded.
The NAT approach is described in RFC 1631 of the Internet Engineering Task Force. The disclosure of RFC 1631, “The IP Network Address Translator (NAT),” is hereby incorporated in its entirety herein by reference.
In order to meet demand for network provided (e.g., Internet) content, multiple servers, such as web site servers, may be loaded with duplicate content and, as such, can serve as alternative sources for content requested by clients. Different conventional techniques may be employed to forward an initial request for the content to the different servers containing the content. For example, in one case, a content server, to which a request is originally directed, may cause a client redirection to a new server by returning a redirection command to the client generating the original request along with an alternative site name or address. This causes the originating client to re-execute its request to the server represented by the new site (i.e., the alternative) name or address.
In another case, requests for content may be directed to a device that has been configured to be aware of alternative servers that have a duplicate store of the requested content and provide the site name or address of the alternative servers to the client, here again, along with a command for the client to redirect its request to the alternative server having the duplicate content. Such devices may operate in conjunction with the existing system that provides domain name services to Internet users, for example. In these examples, the traffic may be rerouted for any of a variety of traffic-related reasons such as avoiding attempting to provide content from a server that is over-burdened by too many requests, avoiding servers that have been taken out of service, or for the purpose of conducting maintenance and for spreading out workload among multiple servers, or for other reasons.